package com.hyts.codegen.common.handle;

import com.hyts.codegen.common.base.ProcessConnection;
import com.hyts.codegen.common.conn.JdbcProcessConnection;
import com.hyts.codegen.common.load.prop.PropertyGenLoadGenerator;
import com.hyts.codegen.common.model.JdbcGenModel;
import com.hyts.dbmeta.model.TableMetadata;
import lombok.Builder;
import lombok.Getter;

import java.util.List;

/**
 * project-name:coffice-toolbox
 * package-name:com.hyts.codegen.process
 * author:Libo/Alex
 * create-date:2019-06-18 11:26
 * email:liboware@gmail.com
 * description:此类主要用于: 处理操作代码生成器-processCode
 */
@Builder
public class JdbcMetaDataLoader {

    @Getter
    private JdbcGenModel jdbcGenModel;

    /**
     * 创建生成服务
     * @param processConnection
     */
    public List<TableMetadata> load(ProcessConnection<?> processConnection){
        //默认去寻找配置文件的加载生成器
        return load(processConnection,null);
    }
    /**
     * 创建生成服务
     * @param processConnection
     * @param param
     * @return
     */
    public List<TableMetadata> load(ProcessConnection<?> processConnection,JdbcGenModel param){
        //默认去寻找配置文件的加载生成器
        if(processConnection == null){
            processConnection = new JdbcProcessConnection(new PropertyGenLoadGenerator());
        }
        List<TableMetadata> tableMetadata = processConnection.getTable(param);
        jdbcGenModel = processConnection.getJdbcGenModel();
        return tableMetadata;
    }

    /**
     * 创建生成服务 - 根据默认的配置文件
     */
    public List<TableMetadata> load(JdbcGenModel param){
        return load(null,param);
    }

    /**
     * 创建生成服务 - 根据默认的配置文件
     */
    public List<TableMetadata> load(){
        return load(null,null);
    }

}
